import json


class UserInfo:
    """用户信息类，用于封装JSON中的用户数据"""

    def __init__(self, user_data):
        """
        初始化用户信息
        :param user_data: 包含用户信息的字典
        """
        self.id = user_data.get('id')
        self.name = user_data.get('name')
        self.age = user_data.get('age')
        self.email = user_data.get('email')
        self.address = user_data.get('address', {})
        self.is_active = user_data.get('is_active', False)

    def __str__(self):
        """魔术方法，返回用户基本信息字符串"""
        return (f"用户ID: {self.id}\n"
                f"姓名: {self.name}\n"
                f"年龄: {self.age}\n"
                f"邮箱: {self.email}\n"
                f"地址: {self.address.get('street', '')}, {self.address.get('city', '')}\n"
                f"活跃状态: {'是' if self.is_active else '否'}\n"
                "----------------------")


def read_json_file(file_path):
    """
    读取JSON文件
    :param file_path: JSON文件路径
    :return: JSON数据
    """
    try:
        with open(file_path, 'r', encoding='utf-8') as file:
            return json.load(file)
    except FileNotFoundError:
        print(f"错误: 文件 {file_path} 未找到")
        return None
    except json.JSONDecodeError:
        print(f"错误: 文件 {file_path} 不是有效的JSON格式")
        return None


def main():
    # 1. 读取json.txt中的信息
    json_data = read_json_file('json.txt')
    if not json_data:
        return

    # 2. 创建UserInfo类封装数据
    # 4. 将所有用户信息封装并存入列表
    users_list = [UserInfo(user) for user in json_data]

    # 5. 遍历列表输出所有用户信息
    print("所有用户信息:")
    for user in users_list:
        print(user)


if __name__ == "__main__":
    main()